icon helper: suppress style_changed when transient
authorMatthias Clasen <mclasen@redhat.com>
Sat, 19 Dec 2015 01:53:02 +0000 (20:53 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 19 Dec 2015 01:53:02 +0000 (20:53 -0500)
Transient nodes should not propagate style-changed signals
that can cause widgets to get reallocated. This was causing
treeviews and iconviews with pixbuf cells to be constantly
resized and redrawn.

gtk/gtkiconhelper.c

index cd31bc62a89cf33228cba7e2edbbaac6040e41a4..6ad6e7263fddc4173124022fd80ebab129f9a8bb 100644 (file)
@@ -148,7 +148,8 @@ gtk_icon_helper_style_changed (GtkCssGadget      *gadget,
   if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON))
     gtk_icon_helper_invalidate (GTK_ICON_HELPER (gadget));
 
-  GTK_CSS_GADGET_CLASS (gtk_icon_helper_parent_class)->style_changed (gadget, change);
+  if (!GTK_IS_CSS_TRANSIENT_NODE (gtk_css_gadget_get_node (gadget)))
+    GTK_CSS_GADGET_CLASS (gtk_icon_helper_parent_class)->style_changed (gadget, change);
 }
 
 static void